29 #include "usbd_core.h"
30 #include "usbd_desc.h"
31 #include "usbd_conf.h"
35 #define USBD_VID 0x0483
36 #define USBD_PID 0x5740
37 #define USBD_LANGID_STRING 0x409
38 #define USBD_MANUFACTURER_STRING "STMicroelectronics"
39 #define USBD_PRODUCT_HS_STRING "STM32 Virtual ComPort in HS Mode"
40 #define USBD_PRODUCT_FS_STRING "STM32 Virtual ComPort in FS Mode"
41 #define USBD_CONFIGURATION_HS_STRING "VCP Config"
42 #define USBD_INTERFACE_HS_STRING "VCP Interface"
43 #define USBD_CONFIGURATION_FS_STRING "VCP Config"
44 #define USBD_INTERFACE_FS_STRING "VCP Interface"
55 #ifdef USB_SUPPORT_USER_STRING_DESC
56 uint8_t *USBD_VCP_USRStringDesc (USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
71 #if defined ( __ICCARM__ )
72 #pragma data_alignment=4
74 __ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_LEN_DEV_DESC]
__ALIGN_END = {
92 USBD_MAX_NUM_CONFIGURATION
96 #if defined ( __ICCARM__ )
97 #pragma data_alignment=4
99 __ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC]
__ALIGN_END = {
100 USB_LEN_LANGID_STR_DESC,
101 USB_DESC_TYPE_STRING,
108 USB_SIZ_STRING_SERIAL,
109 USB_DESC_TYPE_STRING,
112 #if defined ( __ICCARM__ )
113 #pragma data_alignment=4
115 __ALIGN_BEGIN uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ]
__ALIGN_END;
118 static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len);
119 static void Get_SerialNum(
void);
129 *length =
sizeof(USBD_DeviceDesc);
130 return (uint8_t*)USBD_DeviceDesc;
141 *length =
sizeof(USBD_LangIDDesc);
142 return (uint8_t*)USBD_LangIDDesc;
184 *length = USB_SIZ_STRING_SERIAL;
200 if(speed == USBD_SPEED_HIGH)
235 static void Get_SerialNum(
void)
237 uint32_t deviceserial0, deviceserial1, deviceserial2;
239 deviceserial0 = *(uint32_t*)DEVICE_ID1;
240 deviceserial1 = *(uint32_t*)DEVICE_ID2;
241 deviceserial2 = *(uint32_t*)DEVICE_ID3;
243 deviceserial0 += deviceserial2;
245 if (deviceserial0 != 0)
259 static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len)
263 for( idx = 0; idx < len; idx ++)
265 if( ((value >> 28)) < 0xA )
267 pbuf[ 2* idx] = (value >> 28) +
'0';
271 pbuf[2* idx] = (value >> 28) +
'A' - 10;
276 pbuf[ 2* idx + 1] = 0;